WordPressにはデフォルトでサイト内検索機能が備わっています。

任意のキーワードを入力すると固定ページ・投稿ページなどのコンテンツがヒットします。

この記事では、サイト内検索を行った際に、バックエンドでどのような処理が行われているのかを解説します。

SQLの処理を確認するために、Query Monitorという開発用のプラグインを使用して進めて行きます。
Query Monitor

サイト内検索実行

クエリー

実際にサイト内検索が行われると下記のような処理が走ります。

SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
WHERE 1=1
AND (((wp_posts.post_title LIKE '%検索キーワード%')
OR (wp_posts.post_excerpt LIKE '%検索キーワード%')
OR (wp_posts.post_content LIKE '%検索キーワード%')))
AND wp_posts.post_type IN ('post', 'page')
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_status = 'acf-disabled'
OR wp_posts.post_author = 1
AND wp_posts.post_status = 'private')
ORDER BY wp_posts.post_title LIKE '%検索キーワード%' DESC, wp_posts.post_date DESC
LIMIT 0, 10

 

検索条件に該当する項目

キーワードをデータベースから検索する際の検索条件を指定しているのが下記になります。

AND (((wp_posts.post_title LIKE '%検索キーワード%')
OR (wp_posts.post_excerpt LIKE '%検索キーワード%')
OR (wp_posts.post_content LIKE '%検索キーワード%')))
AND wp_posts.post_type IN ('post', 'page')
AND (wp_posts.post_status = 'publish'
OR wp_posts.post_author = 1
AND wp_posts.post_status = 'private')

 

重要な項目を細分化

AND wp_posts.post_title LIKE '%検索キーワード%'

投稿記事のタイトル

OR wp_posts.post_excerpt LIKE '%検索キーワード%'

投稿記事の抜粋文

OR wp_posts.post_content LIKE '%検索キーワード%'

投稿記事の本文

AND wp_posts.post_type IN ('post', 'page')

投稿ページと固定ページで作成されたコンテンツ

カテゴリー: WordPress